package com.aiju.support.aop;

import java.lang.reflect.InvocationHandler;
import java.util.List;

/**
 * @author: 佐为
 * @date: 2017-03-21 16:16
 * @version: V1.0
 * @Description: 代理实例的调用处理程序实现的接口
 */
public interface IInterceptorHandler extends InvocationHandler {

    /**
     * 注册多个方法
     */
    void registerMethods();

    /**
     * 注册一个方法
     * @param methodName
     */
    void registerMethod(String methodName);

    /**
     * 注销一个方法
     * @param methodName
     */
    void unregisterMethod(String methodName);

    /**
     * 是否拦截
     * @param methodName
     * @return
     */
    boolean canIntercept(String methodName);

    /**
     * 绑定
     * @param proxied
     * @param interceptors
     * @return
     */
    Object bind(Object proxied, List<IInterceptor> interceptors);
}
